package kr.co.bettersoftportal.site.management.service;

import kr.co.bettersoftportal.site.domain.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.List;


public interface BettersoftPortalService {

    //Member Service
    public abstract Member getMemberById(String id);
    public abstract String getMemberExistById(String id);
    public abstract String logIn(String id, String password);
    public abstract String insertMember(Member member);


    //Simple mail Service

    /**
     * 메일 보내기 서비스
     *
     * @param subject
     * @param content
     * @param fromUser
     * @param toUser
     * @param userId
     * @return
     */
    public abstract String sendMail(String subject, String content, String fromUser, String toUser, String userId);

    /**
     * 멤버 정보를 이용하여 비밀번호 수정
     *
     * @param member
     * @return
     */
    public abstract String updatePasswordByMember(Member member);

    /**
     * 파일 업로드 서비스
     *
     * 전송되어 온 MultipartFile 을 그대로 DB 서버에 업로드 한다.
     * UUID 를 이용하여 랜덤한 이름을 생성하여 업로드
     *
     * @param file
     * @param realPath
     * @return
     */
    public abstract UploadFile uploadFile(MultipartFile file, String realPath);

    /**
     * 비율 고정 이미지 만들기
     *
     * 전달되어 진 width, height 를 토대로 고정비율을 가진 이미지를 생성하여 업로드 한다.
     * width, height 의 길이를 비교하여 긴쪽은 유지하고 짧은쪽은 비율에 맞게 재조정된다.
     * 남은 부분은 RGB 값을 지정하여 채워넣는다.
     *
     * @param src
     * @param dest
     * @param width
     * @param height
     * @return
     * @throws IOException
     */
    public abstract String createPushImage(File src, File dest, int width, int height) throws IOException;

    /**
     * 브라우저에서 password SHA 암호화 dwr용
     * @param password
     * @return
     */
    public abstract String passwordEncoding(String password);


    /**
     * 검색 단어로 회원 조회하기.
     *
     * @param member
     * @return
     */
    public abstract List getMemberListBySearchword(Member member);


    /**
     * 검색 단어로 회원 수 조회하기.
     *
     * @param member
     * @return
     */
    public abstract String getTotalMemberCountBySearchword(Member member);


    /**
     * ID 로 멤버 정보 업데이트
     *
     * @param member
     * @return
     */
    public abstract String updateMemberByBettersoftId(Member member);





}
